// @/store/websocketStore.js
import { defineStore } from 'pinia'
import { initWebSocket } from '@/utils/websocket.js'
import { getToken } from '@/utils/auth.js'
import useUserStore from '@/store/modules/user'

export const useWebSocketStore = defineStore('websocket', {
  state: () => ({
    ws: null, // 存储WebSocket实例
    isConnected: false, // 实时反映连接状态
    wsUrl: 'localhost:8080' // 从环境变量获取，避免硬编码
  }),
  actions: {
    // 登录后连接（自动获取用户信息和token）
    connectIfLoggedIn(url, userId, token) {
      const token1 = getToken()
      const userStore = useUserStore() // 引入用户store获取userId
      
      // 验证条件：有token、有userId、未连接
      if (token1 && userStore.id && !this.isConnected) {
        initWebSocket(url, userId, token)
      }
    },
    // 主动关闭连接
    closeConnection() {
      if (this.ws) {
        this.ws.close(1000, '主动关闭') // 正常关闭，不触发重连
        this.ws = null
        this.isConnected = false
      }
    }
  }
})